<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>常规流-基本概念</title>
</head>
<style>
  body{
    margin: 0;
  }

  .percent{
    width: 200px;
    height: 600px;
    border: 1px solid;
    background-color: lightblue;
  }
  .percent .left{
    width: 50%;
    height: 50%;
    margin-top: 50%;
    margin-left: 50%;
    background-color: red;
  }

  .parent{
    background-color: lightblue;
    width: 200px;
    height: 600px;
  }

 .parent .child{
    background-color: red;
    height: 100px;
    width: 100px;
    margin-top: 100px;
  }
  .parent .child-right{
    background-color: black;
    height: 100px;
    width: 100px;
    margin-top: 100px;
    color: white;
  }
  
</style>
<body>
  <!-- 
    常规流又叫做文档流、普通文档流、常规文档流
    所有元素，默认情况下都属于常规流布局
    总体规则：块盒独占一行，行盒水平依次排列
   -->
   <h1>
     包含块
   </h1>
   <p>
     每个元素都有它的包含块，包含块决定了盒子的排列区域，绝大部分情况下盒子的包含块为其 <strong>父元素的内容盒</strong> 
   </p>
   <h2>
     规则一、每个块盒的总宽度，必须等于包含块的宽度
   </h2>
   <p>
     1、如果没指定块盒的宽度，那么默认值是auto，意味着如果外边距、边框、内边距没有用光包含块的宽度，那么剩下的就分给width
   </p>
   <p>
     2、如果块盒指定了宽度，并且如果再加上外边距、边框、内边距都没分完包含块的宽度，那么剩余的将分配给 <strong>margin-right</strong>
   </p>
   <p>
     3、如果指定了块盒宽度，并设置 <code>margin-right:auto;margin-left:auto;</code> 那么剩余的宽度平均分给左右外边距
   </p>
   <h2>
     规则二、块盒垂直方向上的<code>auto</code>值
   </h2>
   <p>
     1、对于height来说，时应内容高度
   </p>
   <p>
     2、对于margin来说，就等于0
   </p>

   <h2>
     规则三、百分比取值
   </h2>
   <p>
     1、对于padding\margin\的四个方向及width的百分比；
     意味着按照 <strong>包含块的<span style="color: red;">宽度</span></strong> 计算(和高度无关);<br>
   </p>
   <p>
     2、对于高度height的百分比<br>
     1)、如果包含块高度自适应，那么子元素高度百分比无效<br>
     2)、如果包含块高度指定了，此时子元素高度百分比按照包含块的高度计算
   </p>
   <div class="percent">
     <div class="left">
      <span><code>margin-top:50%</code></span>
      <span><code>margin-left:50%</code></span>
     </div>
   </div>
   <h2>
     规则四、上下外边距合并
   </h2>
   <p>
     两个常规流块盒，如果是挨在一起中间没有任何东西隔开的话(包括Border)，那么他们的外边距
     会进行合并，即使一个在另一个内部。
   </p>
   <div class="parent">
     <div class="child"> 
       <span>margin-top:100px 没有效果，因为和父元素的margin-top合并了。</span>
     </div>
     <div class="child-right"> 
       <span >margin-top:100px 有效果，因为碰到了红块的content</span>
     </div>
   </div>
</body>
</html>